package com.wish.g04.base.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wish.g04.base.dto.JrProductDTO;
import com.wish.g04.base.entity.JrProduct;
import com.wish.g04.base.mapper.JrProductMapper;
import com.wish.g04.base.service.IJrProductService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wish.g04.common.core.utils.bean.BeanUtils;
import com.wish.g04.common.security.utils.SecurityUtils;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author 薛凯
 * @since 2022-05-23
 */
@Service
public class JrProductServiceImpl extends ServiceImpl<JrProductMapper, JrProduct> implements IJrProductService {

    /**
     * 金融产品列表
     *
     * @param jrProductType 产品类型
     * @return
     */
    @Override
    public List<JrProduct> getProductList(Integer jrProductType) {
        QueryWrapper<JrProduct> wrapper = new QueryWrapper<>();
        wrapper.eq("jr_product_type",jrProductType);
        // 审核状态为通过
        wrapper.eq("auditor_status",0);
        return list(wrapper);
    }

    /**
     * 逻辑删除  作废功能
     *
     * @param ids
     * @return
     */
    @Override
    public boolean removeLogicByIds(List<Long> ids) {
        List<JrProduct> list = new ArrayList<>();
        ids.forEach(id->{
            JrProduct jrProduct = new JrProduct().setId(id).setDelFlg(true);
            list.add(jrProduct);
        });
        return saveOrUpdateBatch(list);
    }

    /**
     * 新增
     *
     * @param jrProductDTO
     * @return
     */
    @Override
    public boolean edit(JrProductDTO jrProductDTO) {
        JrProduct jrProduct = new JrProduct();
        BeanUtils.copyBeanProp(jrProduct,jrProductDTO);
        // 设置 资方名称
        jrProduct.setCompanyName(jrProduct.getCompanyId() == 1 ? "樱花分期" : jrProduct.getCompanyId() == 2 ? "久金所" : "应花");
        if (jrProduct.getId() != null) {
            // 修改时间
            jrProduct.setUpdateTime(LocalDateTime.now());
            // 设置修改人
            jrProduct.setUpdateUserid(SecurityUtils.getUserId());
            // 软删除标识
            jrProduct.setDelFlg(getById(jrProduct.getId()).getDelFlg());
        } else {
            // 创建时间
            jrProduct.setCreateTime(LocalDateTime.now());
            // 获取创建人id
            jrProduct.setCreateUserid(SecurityUtils.getUserId());
            // 修改时间
            jrProduct.setUpdateTime(LocalDateTime.now());
            // 设置修改人
            jrProduct.setUpdateUserid(SecurityUtils.getUserId());
            // 软删除标识
            jrProduct.setDelFlg(false);
            // 设置审核状态为未审核
            jrProduct.setAuditorStatus(1);
        }

        return saveOrUpdate(jrProduct);
    }

    /**
     * 获取要审核的列表
     *
     * @param jrProductType
     * @return
     */
    @Override
    public List<JrProduct> getAuditorList(Integer jrProductType) {
        QueryWrapper<JrProduct> wrapper = new QueryWrapper<>();
        wrapper.eq("jr_product_type",jrProductType);
        // 审核状态为通过
        wrapper.ne("auditor_status",0);
        return list(wrapper);
    }

    /**
     * 驳回申请
     *
     * @param id
     * @return
     */
    @Override
    public boolean reject(Integer id) {
        JrProduct jrProduct = getById(id);
        jrProduct.setAuditorStatus(2);
        return saveOrUpdate(jrProduct);
    }

    /**
     * 通过申请
     *
     * @param id
     * @return
     */
    @Override
    public boolean adopt(Integer id) {
        JrProduct jrProduct = getById(id);
        jrProduct.setAuditorStatus(0);
        return saveOrUpdate(jrProduct);
    }
}
